@@ -38,6 +38,7 @@ public class CameraService extends Service { |
||
38 | 38 |
public static final int CMD_INIT_CAMERA_CONNECTION = 9000; |
39 | 39 |
public static final int CMD_EXIT_CAMERA_CONNECTION = 9001; |
40 | 40 |
public static final int CMD_START_CAPTURE_PHOTO = 9002; |
41 |
+ public static final int CMD_STOP_CAPTURE_PHOTO = 9003; |
|
41 | 42 |
|
42 | 43 |
private static final String MSG_TYPE_CAMERA_ERROR = "camero error";//相机错误,可能是线松动了。先exit,然后重新init |
43 | 44 |
private static final String MSG_TYPE_NOT_INIT = "not init"; //需要初始化 |
@@ -62,10 +63,15 @@ public class CameraService extends Service { |
||
62 | 63 |
stopCameraService(); |
63 | 64 |
}else if(cmd == CMD_INIT_CAMERA_CONNECTION){ |
64 | 65 |
if(!isInitExecuted){ |
65 |
- LogHelper.d("czy","CameraService 收到重启进程任务"); |
|
66 |
+ LogHelper.d("czy","CameraService 收到初始化相机任务"); |
|
66 | 67 |
count = 0; |
67 | 68 |
cameraInitTask = new CameraInitTask(); |
68 | 69 |
cameraInitTask.execute(); |
70 |
+ }else{ |
|
71 |
+ LogHelper.d("czy","CameraService 相机初始化成功"); |
|
72 |
+ Bundle bundle = new Bundle(); |
|
73 |
+ bundle.putInt(EXTRA_STATUS_PART,MSG_CAMERA_INIT_SUCCESS); |
|
74 |
+ sendCameraIntent(bundle); |
|
69 | 75 |
} |
70 | 76 |
}else if(cmd == CMD_START_CAPTURE_PHOTO){ |
71 | 77 |
if(isInitExecuted){ |
@@ -75,6 +81,15 @@ public class CameraService extends Service { |
||
75 | 81 |
startCapture(); |
76 | 82 |
} |
77 | 83 |
} |
84 |
+ }else if(cmd == CMD_STOP_CAPTURE_PHOTO){ |
|
85 |
+ stopCapture(); |
|
86 |
+ } |
|
87 |
+ }else{ |
|
88 |
+ if(!isInitExecuted){ |
|
89 |
+ LogHelper.d("czy","CameraService自动重启,初始化相机"); |
|
90 |
+ count = 0; |
|
91 |
+ cameraInitTask = new CameraInitTask(); |
|
92 |
+ cameraInitTask.execute(); |
|
78 | 93 |
} |
79 | 94 |
} |
80 | 95 |
return super.onStartCommand(intent, flags, startId); |
@@ -112,7 +127,6 @@ public class CameraService extends Service { |
||
112 | 127 |
@Override |
113 | 128 |
protected Integer doInBackground(Void... params) { |
114 | 129 |
LogHelper.d("czy","CameraService CameraInitTask "); |
115 |
- isInitExecuted = true; |
|
116 | 130 |
return CameraJNIInterface.getInstance().java_mygpcamerainit(); |
117 | 131 |
} |
118 | 132 |
|
@@ -124,6 +138,7 @@ public class CameraService extends Service { |
||
124 | 138 |
} |
125 | 139 |
if(result>=0){ |
126 | 140 |
LogHelper.d("czy","CameraService 相机初始化成功"); |
141 |
+ isInitExecuted = true; |
|
127 | 142 |
Bundle bundle = new Bundle(); |
128 | 143 |
bundle.putInt(EXTRA_STATUS_PART,MSG_CAMERA_INIT_SUCCESS); |
129 | 144 |
sendCameraIntent(bundle); |
@@ -147,10 +162,7 @@ public class CameraService extends Service { |
||
147 | 162 |
|
148 | 163 |
} |
149 | 164 |
public void startCapture() { |
150 |
- if(photoCaptureTimer !=null){ |
|
151 |
- photoCaptureTimer.cancel(); |
|
152 |
- photoCaptureTimer = null; |
|
153 |
- } |
|
165 |
+ stopCapture(); |
|
154 | 166 |
photoCaptureTimer = new Timer(); |
155 | 167 |
photoCaptureTimer.schedule(new TimerTask() { |
156 | 168 |
@Override |
@@ -160,6 +172,13 @@ public class CameraService extends Service { |
||
160 | 172 |
},1000,10); |
161 | 173 |
} |
162 | 174 |
|
175 |
+ public void stopCapture(){ |
|
176 |
+ if(photoCaptureTimer !=null){ |
|
177 |
+ photoCaptureTimer.cancel(); |
|
178 |
+ photoCaptureTimer = null; |
|
179 |
+ } |
|
180 |
+ } |
|
181 |
+ |
|
163 | 182 |
private void fetchPhotoTask(){ |
164 | 183 |
if(!isLastQueryReturned){ |
165 | 184 |
LogHelper.d("czy","CameraService fetchPhotoTask last query not finished,return "); |
@@ -22,6 +22,7 @@ import static ai.pai.lensman.dslr.CameraService.ACTION_CAMERA_SERVICE_STATUS_CHA |
||
22 | 22 |
import static ai.pai.lensman.dslr.CameraService.CMD_EXIT_CAMERA_CONNECTION; |
23 | 23 |
import static ai.pai.lensman.dslr.CameraService.CMD_INIT_CAMERA_CONNECTION; |
24 | 24 |
import static ai.pai.lensman.dslr.CameraService.CMD_START_CAPTURE_PHOTO; |
25 |
+import static ai.pai.lensman.dslr.CameraService.CMD_STOP_CAPTURE_PHOTO; |
|
25 | 26 |
import static ai.pai.lensman.dslr.CameraService.EXTRA_CMD; |
26 | 27 |
import static ai.pai.lensman.dslr.CameraService.EXTRA_DATA_PART; |
27 | 28 |
import static ai.pai.lensman.dslr.CameraService.EXTRA_SESSION_DIR; |
@@ -93,7 +94,7 @@ public class SessionInteractor implements Callback{ |
||
93 | 94 |
mHandler = null; |
94 | 95 |
} |
95 | 96 |
Intent intent = new Intent(App.getAppContext(), CameraService.class); |
96 |
- intent.putExtra(EXTRA_CMD,CMD_EXIT_CAMERA_CONNECTION); |
|
97 |
+ intent.putExtra(EXTRA_CMD,CMD_STOP_CAPTURE_PHOTO); |
|
97 | 98 |
App.getAppContext().startService(intent); |
98 | 99 |
try{ |
99 | 100 |
App.getAppContext().unregisterReceiver(cameraReceiver); |